package com.dys.testreflect01;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @className: com.dys.testreflect01.Test3
 * @description: 反射机制实现支付功能
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/26 下午10:11
 */
public class Test3 {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        // 定义一个字符串,用来模拟前台传递的支付方式: 实际上：就是微信类的全限定路径
        String paymentMethod = "com.dys.testreflect01.WeChat";

        // 下面的代码就是利用反射：Class类具体的对象,WeChat字节码信息
        Class<?> clazz = Class.forName(paymentMethod);
        Object instance = clazz.newInstance();
        Method payOnline = clazz.getMethod("payOnline");
        payOnline.invoke(instance);
    }
}
